其他
【强基固本】传统图机器学习特征提取方法 -- 基于节点水平的特征(Node-level)
“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。
01
(1)基于节点重要性的特征,衡量了某节点在网络中的重要程度,如:节点度,节点中心性度量;
(2)基于结构的特征,能够捕捉节点周围领域的拓扑属性,如:节点度,聚类系数,图元度向量(GDV,graphlet degree vector)
1. 节点度(Node Degree)
2. 节点中心性(Node Centrality)
3. 聚类系数(Clustering Coefficients)
4. 图元度向量(Graphlet Degree Vector)
02
导入第三方库
# 导入第三方网络分析库 networkx
# 导入绘图库
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
导入示例数据集
# 导入networkx自带的网络数据集 karate club 作为示例测试代码
G = nx.karate_club_graph()
# 打印查看网络的基本信息以及可视化
print(nx.info(G))
nx.draw(G, pos=nx.spring_layout(G), with_labels=True)
节点度函数 G.degree(v)
# 打印查看节点度信息
print("Node Degree")
for v in G:
print(f"{v:4} {G.degree(v):6}")
节点中心性函数
# 打印查看各种节点中心性数值
# 各个中心性函数返回的是字典类型数据,key为节点index,value为中心性数值
print("Node centraility")
eigen_dict = nx.eigenvector_centrality(G)
betw_dict = nx.betweenness_centrality(G)
close_dict = nx.closeness_centrality(G)
centrality_df = pd.DataFrame(
{
'eigenvector_centrality': [eigen_dict[v] for v in G],
'betweenness_centrality': [betw_dict[v] for v in G],
'closeness_centrality': [close_dict[v] for v in G],
}
)
centrality_df
节点聚类系数函数 nx.clustering(G)
# 打印查看各种节点聚类系数
# 聚类系数函数nx.clustering(G)返回的是字典类型数据,key为节点index,value为聚类系数数值
print("Node Clustering Coefficients")
nx.clustering(G)
ego = nx.ego_graph(G, 7)
nx.draw(ego, pos=nx.spring_layout(ego), with_labels=True)
完整代码
03
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“强基固本”历史文章
GNN | GCN-谱图卷积从零开始
神经网络如何模拟任意函数?
GMM: Gaussian Mixed Model(高斯混合模型)
深挖一下F1 score (F-measure, F-score)
浅谈拉格朗日乘子法
通用矩阵乘(GEMM)优化算法
深层学习为何要“Deep”
神经网络反向传播的数学原理
目标跟踪初探(DeepSORT)
科普帖:深度学习中GPU和显存分析
深度学习笔记:常用的模型评估指标
三次样条(cubic spline)插值
运动规划丨轨迹规划丨基于改进Dijkstra算法的轨迹平滑方法
神经网络15分钟入门!足够通俗易懂了吧
更多强基固本专栏文章,
请点击文章底部“阅读原文”查看
分享、点赞、在看,给个三连击呗!